#include <utility>
#include <string>
using namespace std;

int main() {
    string s1;  //非常量左值
    const string s2;  //常量左值

    string &r1 = s1;             //【非常量左值引用】可以绑定【非常量左值】
    // string &r2 = s2;          //【非常量左值引用】不能绑定【常量左值】
    const string &r3 = s1;       //【常量左值引用】可以绑定【非常量左值】
    const string &r4 = s2;       //【常量左值引用】可以绑定【常量左值】
    const string &r5 = move(s1); //【常量左值引用】可以绑定【非常量右值】
    const string &r6 = move(s2); //【常量左值引用】可以绑定【常量右值】
    string &&r7 = move(s1);      //【非常量右值引用】可以绑定【非常量右值】
    // string &&r8 = move(s2);   //【非常量右值引用】不能绑定【常量右值】
    const string &&r9 = move(s1); //【常量右值引用】可以绑定【非常量右值】
    const string &&r10 = move(s2); //【常量右值引用】可以绑定【常量右值】
}
